CLEAN: a programming environment based on term graph rewriting
نویسنده
چکیده
The main features of the lazy functional language Concurrent Clean and of its semantics based on Term Graph Rewriting are presented. 1 History The pure, lazy functional language Concurrent Clean (version 1.0) is a major upgrade of the previous release (0.84b) of Clean ((3,10,11]). Clean was originally designed as an experimental intermediate language and deliberately kept syntactically as poor as possible to be able to focus on the essential language and implementation issues. This strategy enabled us to study new concepts (such as term graph rewriting 1], lazy copying 4], abstract reduction 8], uniqueness typing 2]) without too much implementation eeort. The ideas were tested in the Clean compiler which could be used on small machines and produced state-of-the-art code 13]. The consequence was that people started to use Clean to construct large applications even though Clean was actually not intended as a programming language. So, it became necessary to turn the experimental intermediate language into a proper practical applicable general purpose functional programming language suited for the development of real world applications. 1.1 What is special about Concurrent Clean 1.0? Compared with the previous version of Clean a lot of new features are added based on our own experience with writing complex applications (such as the new Clean I/O system). Many of the added language constructs are similar to those commonly found in other modern lazy functional languages (such as Miranda 15], SML 5], Haskell 7]. People familiar with these languages will have no diiculty to program in Clean and we hope that they enjoy the compilation speed and quality of the produced code. In addition Clean ooers a couple of very special features. Of particular importance for practical use is Cleans' uniqueness typing enabling the incorporation of destructive updates c 1995 Elsevier Science B. V.
منابع مشابه
Confluent Term-Graph Reduction for Computer-Aided Formal Reasoning
Sparkle is the dedicated proof assistant for the lazy functional programming language Clean, which is based on term-graph rewriting. Because equational reasoning is an important proof technique, Sparkle needs to offer support for formally proving e1 = e2 in as many situations as possible. The base proof of equality is by means of reduction: if e1 reduces to e2, then also e1 = e2. Therefore, the...
متن کاملA Single-Step Term-Graph Reduction System for Proof Assistants
In this paper, we will define a custom term-graph reduction system for a simplified lazy functional language. Our custom system is geared towards flexibility, which is accomplished by leaving the choice of redex free and by making use of single-step reduction. It is therefore more suited for formal reasoning than the well-established standard reduction systems, which usually fix a single redex ...
متن کاملImplementing Term Rewrite Languages in Dactl
Dactl is a low-level language of graph rewriting, intended for programming highly Garallel machines. The language includes, but is not restricted to, the limited form of graph rewriting which is commonly used to implement functional language such as Miranda, ML, Hope and Clean. In contrast to these functional languages, where the order in which subterms are evahtated (the ma!uation strategy) is...
متن کاملConcurrent Clean
Concurrent Clean is an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. An important diierence with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing of computation. Cyclic structures can be deened. Concurrent Clean furthermore allows to control th...
متن کاملTheorem proving for functional programmers Sparkle: a functional theorem prover
Sparkle is a new theorem prover written and specialized in the functional programming language Clean. It is in the first place intended to be used by programmers on small parts of Clean-programs, combining theorem proving and programming into one process. It should of course also be usable by logicians interested in proving properties of larger programs. This paper presents an example proof abo...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Electr. Notes Theor. Comput. Sci.
دوره 2 شماره
صفحات -
تاریخ انتشار 1995